Embodiments of the inventive concept relate generally to information storage technologies. More particularly, certain embodiments of the inventive concept relate to systems and methods in which a host controls selective execution of garbage collection by a storage device.
Nonvolatile memory devices, such as flash memory devices, are widely used in a variety of applications such as universal serial bus (USB) drives, digital cameras, mobile phones, smart phones, tablet personal computers (PCs), memory cards, and solid state drives (SSDs), to name but a few.
A flash memory device is typically organized into a plurality of memory blocks, pages, and memory cells, where each of the memory blocks comprises a plurality of pages, and each of the pages comprises a plurality of memory cells. In general, each of the memory cells may be a single-level cell (SLC) or a multi-level cell (MLC). An SLC is a memory cell that stores one bit of information, and an MLC is a memory cell that stores multiple bits of information.
In a typical flash memory device, program operations are performed in units of pages, and erase operations are performed in units of memory blocks. Where a flash memory device receives a program command to replace a page of current data with new data, the flash memory device typically stores the new data in a page having an erased state, and it invalidates the current data. In other words, the flash memory device does not overwrite the current data at its current page location, but merely invalidates the current data and stores the new data in another page.
As the flash memory device continues to operate, invalid pages tend to accumulate in memory blocks that have not been recently erased. The accumulation of invalid pages generally reduces the amount of usable storage space in the flash memory device, and it can also slow down operation of the flash memory device. Accordingly, so-called garbage collection operations may be performed on memory blocks containing significant numbers of invalid pages to reclaim some of the storage space. A typical garbage collection operation involves moving any remaining valid data from a target memory block to a different memory block and then erasing the target memory block. Garbage collection operations are typically performed automatically as part of memory management.